package com.leemz.design.chapter5.holder;

/**
 * 使用静态内部类的形式来实现线程安全同时又是延时加载的单例模式
 * 该方式使用了静态变量+内部类的特性，避免同步实现线程安全，同时因为
 * 静态内部类相当于外部类的静态成员，只有在第一次使用时才会被加载
 */
public class HolderSingleton {

    private HolderSingleton() {};

    private static class InstanceHolder {
        private static HolderSingleton singleton = new HolderSingleton();
    }

    public static HolderSingleton getInstance() {
        return InstanceHolder.singleton;
    }
}
